图片顺时针旋转90度的算法 您所在的位置:网站首页 图片旋转顺时针90°顺时针180°逆时针90° 图片顺时针旋转90度的算法

图片顺时针旋转90度的算法

2024-07-18 06:17| 来源: 网络整理| 查看: 265

 最近在开发过程中遇到一个问题,手机屏幕是240*320,但拍摄的照片是320*240的,所以正常情况下,图片是不能全屏显示的,要么失真,要么就中间部分区域显示,感觉很不爽。而且,网上有好多320*240的图片,很好看,下载到手机上显示不出来原来的效果,很郁闷,既然屏是240*320的,为什么320*240的图片不能全屏显示呢,其实,只要横过来画图就可以了,依此想法,设计了一个算法,其实就是buffer里的数据旋转存放,将其值改为240*320的存储方式,这样问题就迎刃而解了,我现在公布算法程序,抛砖引玉,希望大虾们多多支持。

附上程序:

图片顺时针旋转90度的算法

/************************************************************************* * Function name: lct_deasil_rotate_bitmap_bits_90_degrees * Author: 豪情飞翔 Version: 1.0 Date: 2007-11-16 * Description: * 1. 函数实现图片位图数据旋转的功能, 顺时针旋转90 度 * 2. 转换后的数据保存在 rotate_result 指向的空间 * Input: * 1. UINT8* rotate_result 转换后的数据存放指针 * 2. UINT8* rotate_original 转换前的数据存放指针 * 3. UINT8 u8BytesPerPixel 每个像素所占用的字节数,即位值除以8 * 4. UINT32 u32Original_width 原始图片的宽度 * 5. UINT32 u32Original_height 原始图片的高度 * return: SINT32 **************************************************************************/ SINT32 lct_deasil_rotate_bitmap_bits_90_degrees( UINT8* rotate_result, UINT8* rotate_original, UINT8 u8BytesPerPixel, UINT32 u32Original_width, UINT32 u32Original_height ) { int i; int j; int k; int nWidth = u32Original_height; int nlength_original_height; int nlength_original_width;

nlength_original_height = u32Original_height * u8BytesPerPixel; nlength_original_width = u32Original_width * u8BytesPerPixel;

for( i=0; i for( k=0; k UINT8* bits_240_320 = NULL; if ( bitmap_320_240->bmBytesPerPixel < 0 || bitmap_320_240->bmBytesPerPixel > 4 ) { return -1; } if( !((bitmap_320_240->bmHeight == 240)&&(bitmap_320_240->bmWidth == 320)) ) { return -1; }

bits_240_320 = (UINT8*)malloc( 320 *240 * bitmap_320_240->bmBytesPerPixel ); if( NULL == bits_240_320 ) { return -1; }

lct_deasil_rotate_bitmap_bits_90_degrees( bits_240_320, bitmap_320_240->bmBits, bitmap_320_240->bmBytesPerPixel, bitmap_320_240->bmWidth, bitmap_320_240->bmHeight );

free( bitmap_320_240->bmBits );

bitmap_320_240->bmBits = bits_240_320; bitmap_320_240->bmHeight = 320; bitmap_320_240->bmWidth = 240;

//bmpitch 的含义是一个扫描行的字节数 bitmap_320_240->bmPitch = bitmap_320_240->bmWidth * bitmap_320_240->bmBytesPerPixel;

return 0; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有